package Model;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.util.ArrayList;
import java.util.Random;

import javax.swing.ImageIcon;

/**
 * De esta clase heredan los aliens, los misiles y el alido
 * @author Juan
 *
 */
public abstract class NaveModelInterface  {
	
	private int dx; // direccion x
	private int dy; //direccion y
	private int x; // punto x de la imagen
	private int y; // punto y de la imagen
	private int boundx; // distancia desde el punto x hasta el limite x de la imagen
	private int boundy; // distancia desde el punto y hasta el limite y de la imagen
	private Image image;
	protected boolean visible = true;
	
	
	public NaveModelInterface(String pic, int posx, int posy)
	{
		ImageIcon ii = new ImageIcon(pic);
		image = ii.getImage();
	
		x = posx;
		y = posy;
		
		this.boundx = ii.getIconWidth()-20;
		this.boundy = ii.getIconHeight()-30;
	
	}
	
	
	public Rectangle getBounds()
	{
		return new Rectangle(x, y, boundx, boundy);
	}
	
	public int getBoundx()
	{
		return this.boundx;
	}
	
	public int getBoundy()
	{
		return this.boundy;
	}
	
	protected abstract void move();
	abstract void posicionar();
	public void setDx(int x){
		this.dx = x;
	}
	public void setDy(int y){
		this.dy = y;
	}
	public int getDx()
	{
		return this.dx;
	}
	public int getDy()
	{
		return this.dy;
	}
	public int getX() {
		return x;
	}

	public int getY() {
		return y;
	}
	public void setY(int y){
		this.y = y;
	}
	public void setX(int x){
		this.x = x;
	}
	public Image getImage() {
		return image;
	}
	@Override
	public String toString() {
		return "NaveModelInterface [dx=" + dx + ", dy=" + dy + ", x=" + x
				+ ", y=" + y + ", boundx=" + boundx + ", boundy=" + boundy
				+ ", image=" + image + ", visible=" + visible + "]";
	}

	public boolean isVisible(){
		return visible;
	}
	public boolean collision(NaveModelInterface n2)
	{
		
		Rectangle rectanguloN1 = this.getBounds(); // esta nave
		Rectangle rectanguloN2 = n2.getBounds(); // el que viene por parametro
		if(rectanguloN1.intersects(rectanguloN2))
		{
			return true;
		}

		else
		{
			return false;
		}	
	}
	
}
